package com.wuyi.tea.domain.pojo;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import javax.validation.constraints.NotNull;

import java.io.Serializable;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;

/**
* 
* @TableName user
*/
@ApiModel("用户实体类")
@TableName("`user`")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {

    /**
    * 主键
    */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty("主键")
    private Long id;

    /**
    * 昵称
    */
    @Size(max= 32,message="编码长度不能超过32")
    @ApiModelProperty("昵称")
    @Length(max= 32,message="编码长度不能超过32")
    private String nickname;

    /**
    * 用户名（3~12位）
    */
    @NotBlank(message="[用户名（3~12位）]不能为空")
    @Size(max= 12,message="编码长度不能超过12")
    @ApiModelProperty("用户名（3~12位）")
    @Length(max= 12,message="编码长度不能超过12")
    private String username;

    /**
    * 密码（3~12位）
    */
    @Size(max= 12,message="编码长度不能超过12")
    @ApiModelProperty("密码（3~12位）")
    @Length(max= 12,message="编码长度不能超过12")
    private String password;

    /**
    * 余额
    */
    @ApiModelProperty("余额")
    private Double balance;

    /**
    * 手机号
    */
    @Size(max= 11,message="编码长度不能超过11")
    @ApiModelProperty("手机号")
    @Length(max= 11,message="编码长度不能超过11")
    private String phoneNumber;

    /**
    * 性别（1男，2女）
    */
    @ApiModelProperty("性别（1男，2女）")
    private Integer sex;

    /**
    * 职业
    */
    @Size(max= 16,message="编码长度不能超过16")
    @ApiModelProperty("职业")
    @Length(max= 16,message="编码长度不能超过16")
    private String job;

    /**
    * 所在城市
    */
    @Size(max= 32,message="编码长度不能超过32")
    @ApiModelProperty("所在城市")
    @Length(max= 32,message="编码长度不能超过32")
    private String city;

    /**
    * 身份，0普通用户，1管理员
    */
    @ApiModelProperty("身份，0普通用户，1管理员")
    private Integer identity;

    /**
    * 用户头像
    */
    @Size(max= 256,message="编码长度不能超过256")
    @ApiModelProperty("用户头像")
    @Length(max= 256,message="编码长度不能超过256")
    private String avatar;

    /**
    * 当前所在地址
    */
    @Size(max= 64,message="编码长度不能超过64")
    @ApiModelProperty("当前所在地址")
    @Length(max= 64,message="编码长度不能超过64")
    private String localAddress;

    /**
    * 创建时间
    */
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /**
    * 更新时间
    */
    @ApiModelProperty("更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;
}
